Efficiently determining an absorption coefficient of a virtual volume in 3D computer graphics

ABSTRACT

Disclosed is a method to derive the absorption coefficient, transparency, and/or the scattering coefficient from the user-specified parameters including roughness, phase function, index of refraction (IOR), and color by performing the simulation once, and storing the results of the simulation in an easy to retrieve representation, such as a lookup table, or an analytic function. To create the analytic function, one or more analytic functions can be fitted to the results of the simulation for the multiple parameters including roughness, phase function, IOR, and color. The lookup table can be combined with the analytic representation. For example, the lookup table can be used to represent the color, roughness, and phase function, while the IOR can be represented by an analytic function. For example, when the IOR is above 2, the lookup table becomes three-dimensional and the IOR is calculated using the analytic function.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of the U.S. utility patentapplication Ser. No. 17/335,892 filed Jun. 1, 2021, which claimspriority to the U.S. provisional patent application Ser. No. 63/194,796filed May 28, 2021 which is incorporated herein by reference in itsentirety.

BACKGROUND

Subsurface scattering (SSS), also known as subsurface light transport(SSLT), is a mechanism of light transport in which light that penetratesthe surface of a translucent object is scattered by interacting with thematerial and exits the surface at a different point. The light willgenerally penetrate the surface and be reflected a number of times atirregular angles inside the material before passing back out of thematerial at a different angle than it would have had it been reflecteddirectly off the surface. Subsurface scattering is important forrealistic 3D computer graphics, being necessary for the rendering ofmaterials such as marble, skin, leaves, wax, clouds, milk, etc. Ifsubsurface scattering is not implemented, the material may lookunnatural, like plastic or metal. One drawback of subsurface scatteringis the computational cost required to compute it.

SUMMARY

Disclosed here is a method to derive the absorption coefficient,transparency, and/or the scattering coefficient from the user-specifiedparameters including roughness, phase function, index of refraction(IOR), and color in a 3D computer graphics by performing the simulationonce, and storing the results of the simulation in an easy to retrieverepresentation, such as a lookup table, or an analytic function for usein rendering of a 3D graphic. To create the analytic function, one ormore analytic functions can be fitted to the results of the simulationfor the multiple parameters including roughness, phase function, IOR,and color.

The lookup table can be combined with the analytic representation. Forexample, the lookup table can be used to represent the color, roughness,and phase function, while the IOR can be represented by an analyticfunction. For example, when the IOR is above 2, the lookup table becomesthree-dimensional and the IOR is calculated using the analytic function.

BRIEF DESCRIPTION OF THE DRAWINGS

Detailed descriptions of implementations of the present invention willbe described and explained through the use of the accompanying drawings.

FIG. 1 shows how to efficiently determine an absorption coefficient of avirtual volume.

FIGS. 2A-2C show an example of volume attributes.

FIGS. 3A-3B show the relationship between single scattering albedo andreflectance albedo.

FIG. 4 shows the analytic function representing the IOR.

FIG. 5 illustrates an example visual content generation system as mightbe used to generate imagery in the form of still images and/or videosequences of images.

FIG. 6 is a block diagram that illustrates a computer system upon whichthe computer systems of the systems described herein and/or visualcontent generation system may be implemented.

FIG. 7 is a flowchart of a method to efficiently determine an absorptioncoefficient of a volume.

FIG. 8 is a flowchart of a method to efficiently determine an absorptioncoefficient of a volume.

The technologies described herein will become more apparent to thoseskilled in the art from studying the Detailed Description in conjunctionwith the drawings. Embodiments or implementations describing aspects ofthe invention are illustrated by way of example, and the same referencescan indicate similar elements. While the drawings depict variousimplementations for the purpose of illustration, those skilled in theart will recognize that alternative implementations can be employedwithout departing from the principles of the present technologies.Accordingly, while specific implementations are shown in the drawings,the technology is amenable to various modifications.

DETAILED DESCRIPTION

The description and associated drawings are illustrative examples andare not to be construed as limiting. This disclosure provides certaindetails for a thorough understanding and enabling description of theseexamples. One skilled in the relevant technology will understand,however, that the invention can be practiced without many of thesedetails. Likewise, one skilled in the relevant technology willunderstand that the invention can include well-known structures orfeatures that are not shown or described in detail, to avoidunnecessarily obscuring the descriptions of examples.

Efficiently Determining an Absorption Coefficient of a Volume

FIG. 1 shows how to efficiently determine an absorption coefficient of avirtual volume. The system 100 includes a simulator 110, a renderer 120,a user interface 130, an image 140, and volume attributes 150.

The renderer 120 generates the image 140, which is presented to the userthrough the user interface 130. The user interface 130 can receive fromthe user specification of volume attributes 150. For example, the usercan work on shading a translucent three-dimensional object occupying avolume through which light scatters. The volume attributes 150 caninclude color, that is, albedo, phase function, surface roughness, IOR,absorption coefficient, scattering coefficient, and/or transparency.

While the user can intuitively specify certain volume attributes 150,some of the attributes are difficult such as absorption coefficient,scattering coefficient, and/or transparency. In addition, the volumeattributes 150 depend on each other. For example, absorptioncoefficient, scattering coefficient, and/or transparency depend oncolor, phase function, surface roughness, and IOR.

To aid the user, the system 100 enables the user to specify only asubset of the volume attributes 150, and the system automaticallydetermines the remainder of the volume attributes. For example, the usercan specify the color, phase function, surface roughness, and IOR, andthe system can determine the absorption coefficient.

To determine the unspecified attribute, the system 100 can perform asimulation on a simulator 110 which models a virtual ray of lightinteracting with the volume based on the multiple volume attributes. Thevirtual ray of light can include one or more wavelengths ofelectromagnetic radiation. The simulation can include path tracing avirtual ray of light through the volume, which can be extremelycomputationally expensive, on the order of tens of hours. Consequently,to reduce the computation time of the simulation, the system 100performs the simulation only once and represents the results in acomputationally efficient representation 160.

The computationally efficient representation 160 can include a lookuptable and/or an analytic function. The analytic function offers bothmemory savings and speed savings over the lookup table. However, thelookup table, in some cases, can provide a more accurate representation.The computationally efficient representation 160 can include a hybridapproach including both the lookup table and analytic function.Retrieving, for example, the absorption coefficient from the lookuptable or computing the absorption coefficient from the analytic functionincreases the speed of computation by a thousand times. Thecomputationally efficient representation 160 is independent ofwavelength of the virtual ray of light, and a single computationallyefficient representation 160 can be used for various wavelengths in acolor system such as red green blue (RGB), cyan magenta yellow (CMY),cyan magenta yellow key (CMYK).

Once the user adjusts the volume attributes 150, the renderer 120 candetermine the missing volume attributes and can provide the missingvolume attributes to the user through the user interface 130. Inaddition, the renderer can use the computationally efficientrepresentation 160 and a rendering algorithm, such as path tracing 170,to produce the image 140 of the scene based on the newly specifiedvolume attributes 150. Subsequently, the user can engage in an iterativeprocess of adjusting the volume attributes 150 based on the receivedimage 140.

FIGS. 2A-2C show an example of volume attributes. The volume attributes200 can be part of a shading program that describes volume attributes200 and how a virtual ray of light 260 interacts with the volume 250.The volume attributes 200 can include color 210, phase function 220,surface roughness 230, and index of refraction (IOR) 240.

The user can specify color 210, phase function 220, surface roughness230, and IOR 240. For example, the user can paint the surface color ofthe volume 250 to specify the color 210, or the user can, in threedimensions, paint the volumetric color of the volume 250 to specify thecolor 210. Surface roughness 230 indicates how diffuse is the color ofthe volume 250 surface. Metallic objects have low surface roughness.

FIG. 2B shows a phase function 220. The phase function 220 describes aprobability that an incoming virtual ray of light 270 scatters in adirection 280, 290 (only two labeled for brevity). The phase function220 can be a Henyey-Greenstein phase function. The higher the magnitudeof the vector in the direction 280, the more likely the incoming virtualray of light 270 is to scatter in the direction 280. The directions 205indicate that the ray of light 270 has back scattered. The user canspecify a single function for the entire volume 250, or the user canspecify a phase function for the volume 250. For example, the user canpaint the phase function 220 inside and on the surface of the volume250.

FIG. 2C shows how an IOR 240 a-c influences the path of the virtual rayof light 215 a-c. IOR 240 of a material is a dimensionless number thatdescribes how fast light travels through the material. When light 215moves from one medium 225 to another 235, it changes direction, that is,it is refracted. If it moves from a medium with IOR n1 to one with IORn2, with an incidence angle to the surface normal of θ1, the refractionangle θ2 can be calculated from Snell's law:n1*sin θ1=n2*sin θ2

When light 215 enters a material with higher IOR, the angle ofrefraction will be smaller than the angle of incidence and the lightwill be refracted toward the normal of the surface. The higher therefractive index, the closer to the normal direction the light willtravel. When passing into a medium with a lower refractive index, thelight will instead be refracted away from the normal 255 a-c, toward thesurface. In FIG. 2C, IOR 240 a<IOR 240 b<IOR 240 c.

Usually, the volume 225 has a higher IOR than the air 235. When light215 refracts at the surface 245 of the volume 225, the light 215refracts away from the normal 255 a-c. The higher the IOR of the volume225, the more the light 215 refracts, until the light 215 c undergoestotal internal reflection and refracts back into the volume 225. As IORincreases, the number of rays undergoing total internal reflectionincreases. Consequently, the simulation of the light 215 path becomestoo time consuming to calculate since whenever the light 215 hits thesurface from the inside, the majority is reflected back which causesvery long paths. In addition, with increasing IOR, the calculatedsolution becomes numerically instable and not accurate enough becausesmall differences in the light 215 path, for example, 0.00001 and0.00002, produce a different result once the IOR is above, say, 2.0. Soinstead of simulating the light 215 reflecting and refracting, thesystem extrapolates the data for increase in IOR by fitting the IOR datato a formula. The same formula can be inverted to recover the data.

In one embodiment, when the IOR 240 exceeds 2.0, the system representsthe change in the IOR with an analytic function. Consequently, thecomputationally efficient representation 160 in FIG. 1 is a combinationof a lookup table, which includes volume attributes color 210, phasefunction 220, and surface roughness 230, and an analytic functionrepresenting IOR 240 data. When IOR 240 is less than or equal to 2.0,the computationally efficient representation 160 can include a lookuptable for all volume attributes 210, 220, 230, 240.

In another embodiment, the system can perform the simulation, gather thesimulation data, and, based on the simulation data, create thecomputationally efficient representation 160 in the form of an analyticfunction for all of the volume attributes 210, 220, 230, 240. Forexample, the analytic function of the volume attributes can be a Riemanndistribution.

In FIG. 2A, based on the volume attributes 210, 220, 230, and 240, thesystem can calculate the dependent attribute 257. The dependentattribute 257 can be the absorption coefficient of the volume 250,transparency of the volume 250, or scattering coefficient of the volume250. The absorption, transparency, or scattering coefficients can bederived from each other. In other words, if the absorption coefficientis known, transparency can be calculated because transparency isinversely proportional to absorption, and vice versa. Similarly, if theabsorption coefficient is known, the scattering coefficient can becomputed, and vice versa.

The absorption coefficient indicates how much light ray 215 a-c energyis swallowed by the volume 225. The scattering coefficient indicates theprobability of how often the direction of the light ray 215 a-c changesinto directions 280, 290 upon a scattering event. In other words, thescattering coefficient indicates the length of the distance the lightray 215 a-c can travel in the volume 225 before its direction changes.The absorption coefficient and the scattering coefficient are relatedwith a formula that can be used to compute the absorption coefficientgiven the scattering coefficient, and vice versa.

The absorption coefficient is inversely correlated to the IOR. Thehigher the IOR, the longer the path of the light ray 215 a-c in thevolume 250 and the more chances that the light ray 215 a-c is absorbed.Consequently, if the IOR is high and the absorption coefficient is high,the light ray 215 a-c is extinguished inside the volume 250 and does notcontribute to the surface color. As a result, the higher the IOR is, thelower the absorption coefficient of the volume 250 becomes to enable thelight ray 215 a-c to exit the volume 250 and contribute to the surfacecolor.

Row of images 265 in FIG. 2A shows changing translucency of the volume250. The left-hand side of the row of images 265 shows the volume 250with low transparency; in other words, high absorption. The portion 275of the row of images 265 shows the volume 250 with the lowesttransparency in the row of images 265. The right-hand side of the row ofimages 265 shows the volume 250 with high transparency; in other words,low absorption. The portion 285 of the row of images 265 shows thevolume 250 with the highest transparency in the row of images 265.

Absorption models transport of light in the volume 250. Absorption canmodel the transport of light according to Beer's law, where theintensity of light decreases exponentially with increasing traveldistance through the volume 250.

FIGS. 3A-3B show the relationship between single scattering albedo (SA)and reflectance albedo (RA). The SA is represented on the Y axis, andthe RA is represented on the X axis. The RA is the diffuse colorspecified by the user. The system can calculate the absorption from theSA.

Graphs 300, 310 have a fixed surface roughness of 0.4 and a variablephase function. The phase function in graph 300 is isotropic, while thephase function in graph 310 is forward scattering. Forward scatteringmeans that upon a scattering event, the ray of light is most likely toscatter in the forward direction. Every curve 320, 330 (only 2 labeledfor brevity) corresponds to an IOR. The lowest curve 320 has IOR=1.0.Each subsequent curve represents an IOR increase of 0.1 until curve 320reaches IOR=2.0. As can be seen in graphs 300, 310, the phase functioninfluences the absorption of the volume. The higher the forwardscattering, the longer the path of the ray of light through the volume.The longer the path of the light ray through the volume, the lower theabsorption of the volume needs to be for the ray of light to make acontribution to the diffuse color of the surface.

Graphs 340, 350 have a fixed phase function and a varying surfaceroughness. The surface roughness is represented using a Beckmanndistribution. The surface roughness in graph 350 is higher than thesurface roughness in graph 340. Every curve 360, 370 (only 2 labeled forbrevity) corresponds to an IOR. The lowest curve 360 has IOR=1.0. Eachsubsequent curve represents an IOR increase of 0.1 until curve 370reaches IOR=2.0. As can be seen in graphs 340, 350, the phase functioninfluences the absorption of the volume; however, the phase functiondoes not have as much of an influence on the absorption of the volume asthe phase function shown in FIG. 3A.

FIG. 4 shows the analytic function representing the IOR. The portion 400is the simulated data and shows the IOR versus absorption data obtainedfrom the simulation. The function 410 is the analytic function used toapproximate the simulated data. The analytic function can be representedby the formula:1−(Pow(Exp(−Pow(x,d)*c),a)*b).

As can be seen in FIG. 4, the analytic function is almost an exact fitto the simulated data 400.

Visual Content Generation System

FIG. 5 illustrates an example visual content generation system 500 asmight be used to generate imagery in the form of still images and/orvideo sequences of images. Visual content generation system 500 mightgenerate imagery of live action scenes, computer generated scenes, or acombination thereof. In a practical system, users are provided withtools that allow them to specify, at high levels and low levels wherenecessary, what is to go into that imagery. For example, a user might bean animation artist and might use visual content generation system 500to capture interaction between two human actors performing live on asound stage and replace one of the human actors with acomputer-generated anthropomorphic non-human being that behaves in waysthat mimic the replaced human actor's movements and mannerisms, and thenadd in a third computer-generated character and background sceneelements that are computer-generated, all in order to tell a desiredstory or generate desired imagery.

Still images that are output by visual content generation system 500might be represented in computer memory as pixel arrays, such as atwo-dimensional array of pixel color values, each associated with apixel having a position in a two-dimensional image array. Pixel colorvalues might be represented by three or more (or fewer) color values perpixel, such as a red value, a green value, and a blue value (e.g., inRGB format). Dimensions of such a two-dimensional array of pixel colorvalues might correspond to a preferred and/or standard display scheme,such as 1920-pixel columns by 1280-pixel rows or 4096-pixel columns by2160-pixel rows, or some other resolution. Images might or might not bestored in a certain structured format, but either way, a desired imagemay be represented as a two-dimensional array of pixel color values. Inanother variation, images are represented by a pair of stereo images forthree-dimensional presentations and in other variations, an imageoutput, or a portion thereof, might represent three-dimensional imageryinstead of just two-dimensional views. In yet other embodiments, pixelvalues are data structures and a pixel value can be associated with apixel and can be a scalar value, a vector, or another data structureassociated with a corresponding pixel. That pixel value might includecolor values, or not, and might include depth values, alpha values,weight values, object identifiers or other pixel value components.

A stored video sequence might include a plurality of images such as thestill images described above, but where each image of the plurality ofimages has a place in a timing sequence and the stored video sequence isarranged so that when each image is displayed in order, at a timeindicated by the timing sequence, the display presents what appears tobe moving and/or changing imagery. In one representation, each image ofthe plurality of images is a video frame having a specified frame numberthat corresponds to an amount of time that would elapse from when avideo sequence begins playing until that specified frame is displayed. Aframe rate might be used to describe how many frames of the stored videosequence are displayed per unit time. Example video sequences mightinclude 24 frames per second (24 FPS), 50 FPS, 140 FPS, or other framerates. In some embodiments, frames are interlaced or otherwise presentedfor display, but for clarity of description, in some examples, it isassumed that a video frame has one specified display time, but othervariations might be contemplated.

One method of creating a video sequence is to simply use a video camerato record a live action scene, i.e., events that physically occur andcan be recorded by a video camera. The events being recorded can beevents to be interpreted as viewed (such as seeing two human actors talkto each other) and/or can include events to be interpreted differentlydue to clever camera operations (such as moving actors about a stage tomake one appear larger than the other despite the actors actually beingof similar build, or using miniature objects with other miniatureobjects so as to be interpreted as a scene containing life-sizedobjects).

Creating video sequences for story-telling or other purposes often callsfor scenes that cannot be created with live actors, such as a talkingtree, an anthropomorphic object, space battles, and the like. Such videosequences might be generated computationally rather than capturing lightfrom live scenes. In some instances, an entirety of a video sequencemight be generated computationally, as in the case of acomputer-animated feature film. In some video sequences, it is desirableto have some computer-generated imagery and some live action, perhapswith some careful merging of the two.

While computer-generated imagery might be creatable by manuallyspecifying each color value for each pixel in each frame, this is likelytoo tedious to be practical. As a result, a creator uses various toolsto specify the imagery at a higher level. As an example, an artist mightspecify the positions in a scene space, such as a three-dimensionalcoordinate system, of objects and/or lighting, as well as a cameraviewpoint, and a camera view plane. From that, a rendering engine couldtake all of those as inputs, and compute each of the pixel color valuesin each of the frames. In another example, an artist specifies positionand movement of an articulated object having some specified texturerather than specifying the color of each pixel representing thatarticulated object in each frame.

In a specific example, a rendering engine performs ray tracing wherein apixel color value is determined by computing which objects lie along aray traced in the scene space from the camera viewpoint through a pointor portion of the camera view plane that corresponds to that pixel. Forexample, a camera view plane might be represented as a rectangle havinga position in the scene space that is divided into a grid correspondingto the pixels of the ultimate image to be generated, and if a raydefined by the camera viewpoint in the scene space and a given pixel inthat grid first intersects a solid, opaque, blue object, that givenpixel is assigned the color blue. Of course, for moderncomputer-generated imagery, determining pixel colors—and therebygenerating imagery—can be more complicated, as there are lightingissues, reflections, interpolations, and other considerations.

As illustrated in FIG. 5, a live action capture system 502 captures alive scene that plays out on a stage 504. Live action capture system 502is described herein in greater detail, but might include computerprocessing capabilities, image processing capabilities, one or moreprocessors, program code storage for storing program instructionsexecutable by the one or more processors, as well as user input devicesand user output devices, not all of which are shown.

In a specific live action capture system, cameras 506(1) and 506(2)capture the scene, while in some systems, there might be other sensor(s)508 that capture information from the live scene (e.g., infraredcameras, infrared sensors, motion capture (“mo-cap”) detectors, etc.).On stage 504, there might be human actors, animal actors, inanimateobjects, background objects, and possibly an object such as a greenscreen 510 that is designed to be captured in a live scene recording insuch a way that it is easily overlaid with computer-generated imagery.Stage 504 might also contain objects that serve as fiducials, such asfiducials 512(1)-(3), that might be used post-capture to determine wherean object was during capture. A live action scene might be illuminatedby one or more lights, such as an overhead light 514.

During or following the capture of a live action scene, live actioncapture system 502 might output live action footage to a live actionfootage storage 520. A live action processing system 522 might processlive action footage to generate data about that live action footage andstore that data into a live action metadata storage 524. Live actionprocessing system 522 might include computer processing capabilities,image processing capabilities, one or more processors, program codestorage for storing program instructions executable by the one or moreprocessors, as well as user input devices and user output devices, notall of which are shown. Live action processing system 522 might processlive action footage to determine boundaries of objects in a frame ormultiple frames, determine locations of objects in a live action scene,where a camera was relative to some action, distances between movingobjects and fiducials, etc. Where elements have sensors attached to themor are detected, the metadata might include location, color, andintensity of overhead light 514, as that might be useful inpost-processing to match computer-generated lighting on objects that arecomputer-generated and overlaid on the live action footage. Live actionprocessing system 522 might operate autonomously, perhaps based onpredetermined program instructions, to generate and output the liveaction metadata upon receiving and inputting the live action footage.The live action footage can be camera-captured data as well as data fromother sensors.

An animation creation system 530 is another part of visual contentgeneration system 500. Animation creation system 530 might includecomputer processing capabilities, image processing capabilities, one ormore processors, program code storage for storing program instructionsexecutable by the one or more processors, as well as user input devicesand user output devices, not all of which are shown. Animation creationsystem 530 might be used by animation artists, managers, and others tospecify details, perhaps programmatically and/or interactively, ofimagery to be generated. From user input and data from a database orother data source, indicated as a data store 532, animation creationsystem 530 might generate and output data representing objects (e.g., ahorse, a human, a ball, a teapot, a cloud, a light source, a texture,etc.) to an object storage 534, generate and output data representing ascene into a scene description storage 536, and/or generate and outputdata representing animation sequences to an animation sequence storage538.

Scene data might indicate locations of objects and other visualelements, values of their parameters, lighting, camera location, cameraview plane, and other details that a rendering engine 550 might use torender CGI imagery. For example, scene data might include the locationsof several articulated characters, background objects, lighting, etc.specified in a two-dimensional space, three-dimensional space, or otherdimensional space (such as a 2.5-dimensional space, three-quarterdimensions, pseudo-3D spaces, etc.) along with locations of a cameraviewpoint and view place from which to render imagery. For example,scene data might indicate that there is to be a red, fuzzy, talking dogin the right half of a video and a stationary tree in the left half ofthe video, all illuminated by a bright point light source that is aboveand behind the camera viewpoint. In some cases, the camera viewpoint isnot explicit, but can be determined from a viewing frustum. In the caseof imagery that is to be rendered to a rectangular view, the frustumwould be a truncated pyramid. Other shapes for a rendered view arepossible and the camera view plane could be different for differentshapes.

Animation creation system 530 might be interactive, allowing a user toread in animation sequences, scene descriptions, object details, etc.and edit those, possibly returning them to storage to update or replaceexisting data. As an example, an operator might read in objects fromobject storage into a baking processor 542 that would transform thoseobjects into simpler forms and return those to object storage 534 as newor different objects. For example, an operator might read in an objectthat has dozens of specified parameters (movable joints, color options,textures, etc.), select some values for those parameters and then save abaked object that is a simplified object with now fixed values for thoseparameters.

Rather than requiring user specification of each detail of a scene, datafrom data store 532 might be used to drive object presentation. Forexample, if an artist is creating an animation of a spaceship passingover the surface of the Earth, instead of manually drawing or specifyinga coastline, the artist might specify that animation creation system 530is to read data from data store 532 in a file containing coordinates ofEarth coastlines and generate background elements of a scene using thatcoastline data.

Animation sequence data might be in the form of time series of data forcontrol points of an object that has attributes that are controllable.For example, an object might be a humanoid character with limbs andjoints that are movable in manners similar to typical human movements.An artist can specify an animation sequence at a high level, such as“the left hand moves from location (X1, Y1, Z1) to (X2, Y2, Z2) overtime T1 to T2”, at a lower level (e.g., “move the elbow joint 2.5degrees per frame”) or even at a very high level (e.g., “character Ashould move, consistent with the laws of physics that are given for thisscene, from point P1 to point P2 along a specified path”).

Animation sequences in an animated scene might be specified by whathappens in a live action scene. An animation driver generator 544 mightread in live action metadata, such as data representing movements andpositions of body parts of a live actor during a live action scene.Animation driver generator 544 might generate corresponding animationparameters to be stored in animation sequence storage 538 for use inanimating a CGI object. This can be useful where a live action scene ofa human actor is captured while wearing mo-cap fiducials (e.g.,high-contrast markers outside actor clothing, high-visibility paint onactor skin, face, etc.) and the movement of those fiducials isdetermined by live action processing system 522. Animation drivergenerator 544 might convert that movement data into specifications ofhow joints of an articulated CGI character are to move over time.

A rendering engine 550 can read in animation sequences, scenedescriptions, and object details, as well as rendering engine controlinputs, such as a resolution selection and a set of renderingparameters. Resolution selection might be useful for an operator tocontrol a trade-off between speed of rendering and clarity of detail, asspeed might be more important than clarity for a movie maker to testsome interaction or direction, while clarity might be more importantthan speed for a movie maker to generate data that will be used forfinal prints of feature films to be distributed. Rendering engine 550might include computer processing capabilities, image processingcapabilities, one or more processors, program code storage for storingprogram instructions executable by the one or more processors, as wellas user input devices and user output devices, not all of which areshown.

Visual content generation system 500 can also include a merging system560 that merges live footage with animated content. The live footagemight be obtained and input by reading from live action footage storage520 to obtain live action footage, by reading from live action metadatastorage 524 to obtain details such as presumed segmentation in capturedimages segmenting objects in a live action scene from their background(perhaps aided by the fact that green screen 510 was part of the liveaction scene), and by obtaining CGI imagery from rendering engine 550.

A merging system 560 might also read data from rulesets formerging/combining storage 562. A very simple example of a rule in aruleset might be “obtain a full image including a two-dimensional pixelarray from live footage, obtain a full image including a two-dimensionalpixel array from rendering engine 550, and output an image where eachpixel is a corresponding pixel from rendering engine 550 when thecorresponding pixel in the live footage is a specific color of green,otherwise output a pixel value from the corresponding pixel in the livefootage.”

Merging system 560 might include computer processing capabilities, imageprocessing capabilities, one or more processors, program code storagefor storing program instructions executable by the one or moreprocessors, as well as user input devices and user output devices, notall of which are shown. Merging system 560 might operate autonomously,following programming instructions, or might have a user interface orprogrammatic interface over which an operator can control a mergingprocess. In some embodiments, an operator can specify parameter valuesto use in a merging process and/or might specify specific tweaks to bemade to an output of merging system 560, such as modifying boundaries ofsegmented objects, inserting blurs to smooth out imperfections, oradding other effects. Based on its inputs, merging system 560 can outputan image to be stored in a static image storage 570 and/or a sequence ofimages in the form of video to be stored in an animated/combined videostorage 572.

Thus, as described, visual content generation system 500 can be used togenerate video that combines live action with computer-generatedanimation using various components and tools, some of which aredescribed in more detail herein. While visual content generation system500 might be useful for such combinations, with suitable settings, itcan be used for outputting entirely live action footage or entirely CGIsequences. The code may also be provided and/or carried by a transitorycomputer readable medium, e.g., a transmission medium such as in theform of a signal transmitted over a network.

According to one embodiment, the techniques described herein areimplemented by one or more generalized computing systems programmed toperform the techniques pursuant to program instructions in firmware,memory, other storage, or a combination. Special-purpose computingdevices may be used, such as desktop computer systems, portable computersystems, handheld devices, networking devices or any other device thatincorporates hard-wired and/or program logic to implement thetechniques.

One embodiment might include a carrier medium carrying image data orother data having details generated using the methods described herein.The carrier medium can comprise any medium suitable for carrying theimage data or other data, including a storage medium, e.g., solid-statememory, an optical disk or a magnetic disk, or a transient medium, e.g.,a signal carrying the image data such as a signal transmitted over anetwork, a digital signal, a radio frequency signal, an acoustic signal,an optical signal or an electrical signal.

Computer System

FIG. 6 is a block diagram that illustrates a computer system 600 uponwhich the computer systems of the systems described herein and/or visualcontent generation system 500 (see FIG. 5) may be implemented. Computersystem 600 includes a bus 602 or other communication mechanism forcommunicating information, and a processor 604 coupled with bus 602 forprocessing information. Processor 604 may be, for example, ageneral-purpose microprocessor.

Computer system 600 also includes a main memory 606, such as arandom-access memory (RAM) or other dynamic storage device, coupled tobus 602 for storing information and instructions to be executed byprocessor 604. Main memory 606 may also be used for storing temporaryvariables or other intermediate information during execution ofinstructions to be executed by processor 604. Such instructions, whenstored in non-transitory storage media accessible to processor 604,render computer system 600 into a special-purpose machine that iscustomized to perform the operations specified in the instructions.

Computer system 600 further includes a read only memory (ROM) 608 orother static storage device coupled to bus 602 for storing staticinformation and instructions for processor 604. A storage device 610,such as a magnetic disk or optical disk, is provided and coupled to bus602 for storing information and instructions.

Computer system 600 may be coupled via bus 602 to a display 612, such asa computer monitor, for displaying information to a computer user. Aninput device 614, including alphanumeric and other keys, is coupled tobus 602 for communicating information and command selections toprocessor 604. Another type of user input device is a cursor control616, such as a mouse, a trackball, or cursor direction keys forcommunicating direction information and command selections to processor604 and for controlling cursor movement on display 612. This inputdevice typically has two degrees of freedom in two axes, a first axis(e.g., x) and a second axis (e.g., y), that allows the device to specifypositions in a plane.

Computer system 600 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware and/orprogram logic which in combination with the computer system causes orprograms computer system 600 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 600 in response to processor 604 executing one or more sequencesof one or more instructions contained in main memory 606. Suchinstructions may be read into main memory 606 from another storagemedium, such as storage device 610. Execution of the sequences ofinstructions contained in main memory 606 causes processor 604 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data and/or instructions that cause a machine tooperation in a specific fashion. Such storage media may includenon-volatile media and/or volatile media. Non-volatile media includes,for example, optical or magnetic disks, such as storage device 610.Volatile media includes dynamic memory, such as main memory 606. Commonforms of storage media include, for example, a floppy disk, a flexibledisk, hard disk, solid state drive, magnetic tape, or any other magneticdata storage medium, a CD-ROM, any other optical data storage medium,any physical medium with patterns of holes, a RAM, a PROM, an EPROM, aFLASH-EPROM, NVRAM, any other memory chip or cartridge.

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire, and fiber optics, including thewires that include bus 602. Transmission media can also take the form ofacoustic or light waves, such as those generated during radio-wave andinfra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 604 for execution. For example,the instructions may initially be carried on a magnetic disk orsolid-state drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over anetwork connection. A modem or network interface local to computersystem 600 can receive the data. Bus 602 carries the data to main memory606, from which processor 604 retrieves and executes the instructions.The instructions received by main memory 606 may optionally be stored onstorage device 610 either before or after execution by processor 604.

Computer system 600 also includes a communication interface 618 coupledto bus 602. Communication interface 618 provides a two-way datacommunication coupling to a network link 620 that is connected to alocal network 622. For example, communication interface 618 may be anetwork card, a modem, a cable modem, or a satellite modem to provide adata communication connection to a corresponding type of telephone lineor communications line. Wireless links may also be implemented. In anysuch implementation, communication interface 618 sends and receiveselectrical, electromagnetic, or optical signals that carry digital datastreams representing various types of information.

Network link 620 typically provides data communication through one ormore networks to other data devices. For example, network link 620 mayprovide a connection through local network 622 to a host computer 624 orto data equipment operated by an Internet Service Provider (ISP) 626.ISP 626 in turn provides data communication services through theworld-wide packet data communication network now commonly referred to asthe “Internet” 628. Local network 622 and Internet 628 both useelectrical, electromagnetic, or optical signals that carry digital datastreams. The signals through the various networks and the signals onnetwork link 620 and through communication interface 618, which carrythe digital data to and from computer system 600, are example forms oftransmission media.

Computer system 600 can send messages and receive data, includingprogram code, through the network(s), network link 620, andcommunication interface 618. In the Internet example, a server 630 mighttransmit a requested code for an application program through theInternet 628, ISP 626, local network 622, and communication interface618. The received code may be executed by processor 604 as it isreceived, and/or stored in storage device 610, or other non-volatilestorage for later execution.

Operations of processes described herein can be performed in anysuitable order unless otherwise indicated herein or otherwise clearlycontradicted by context. Processes described herein (or variationsand/or combinations thereof) may be performed under the control of oneor more computer systems configured with executable instructions and maybe implemented as code (e.g., executable instructions, one or morecomputer programs or one or more applications) executing collectively onone or more processors, by hardware or combinations thereof. The codemay be stored on a computer-readable storage medium, for example, in theform of a computer program comprising a plurality of instructionsexecutable by one or more processors. The computer-readable storagemedium may be non-transitory. The code may also be provided carried by atransitory computer readable medium e.g., a transmission medium such asin the form of a signal transmitted over a network.

Conjunctive language, such as phrases of the form “at least one of A, B,and C,” or “at least one of A, B and C,” unless specifically statedotherwise or otherwise clearly contradicted by context, is otherwiseunderstood with the context as used in general to present that an item,term, etc., may be either A or B or C, or any nonempty subset of the setof A and B and C. For instance, in the illustrative example of a sethaving three members, the conjunctive phrases “at least one of A, B, andC” and “at least one of A, B and C” refer to any of the following sets:{A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Thus, such conjunctivelanguage is not generally intended to imply that certain embodimentsrequire at least one of A, at least one of B and at least one of C eachto be present.

The use of examples, or exemplary language (e.g., “such as”) providedherein, is intended merely to better illuminate embodiments of theinvention and does not pose a limitation on the scope of the inventionunless otherwise claimed. No language in the specification should beconstrued as indicating any non-claimed element as essential to thepractice of the invention.

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. The specification and drawings are,accordingly, to be regarded in an illustrative rather than a restrictivesense. The sole and exclusive indicator of the scope of the invention,and what is intended by the applicants to be the scope of the invention,is the literal and equivalent scope of the set of claims that issue fromthis application, in the specific form in which such claims issue,including any subsequent correction.

Further embodiments can be envisioned to one of ordinary skill in theart after reading this disclosure. In other embodiments, combinations orsub-combinations of the above-disclosed invention can be advantageouslymade. The example arrangements of components are shown for purposes ofillustration and combinations, additions, re-arrangements, and the likeare contemplated in alternative embodiments of the present invention.Thus, while the invention has been described with respect to exemplaryembodiments, one skilled in the art will recognize that numerousmodifications are possible.

For example, the processes described herein may be implemented usinghardware components, software components, and/or any combinationthereof. The specification and drawings are, accordingly, to be regardedin an illustrative rather than a restrictive sense. It will, however, beevident that various modifications and changes may be made thereuntowithout departing from the broader spirit and scope of the invention asset forth in the claims and that the invention is intended to cover allmodifications and equivalents within the scope of the following claims.

All references, including publications, patent applications, andpatents, cited herein are hereby incorporated by reference to the sameextent as if each reference were individually and specifically indicatedto be incorporated by reference and were set forth in its entiretyherein.

Flow Charts

FIG. 7 is a flowchart of a method to efficiently determine an absorptioncoefficient of a volume. In block 700, a hardware or a softwareprocessor executing the instructions described in this application cancreate a computationally efficient representation indicating acorrespondence between an absorption coefficient associated with avolume, and multiple volume attributes associated with the volume. Thecomputationally efficient representation can include an analyticfunction, or a lookup table, as described in this application. Thecomputationally efficient representation can save both time and memorybecause the processor does not have to perform the simulation, andinstead can obtain the absorption coefficient from the computationallyefficient representation. To create the computationally efficientrepresentation, the processor can simulate a virtual ray of lightinteracting with the volume based on the multiple volume attributesincluding a color, an index of refraction, a phase function, and asurface roughness. Since the simulation is computationally expensive, inboth speed and memory, the processor can perform the simulation once andrecord the simulation results in the computationally efficientrepresentation. Retrieving the absorption coefficient from thecomputationally efficient representation is considerably faster thanobtaining the absorption coefficient by performing the simulation, byfor example a thousand times. The processor can create thecomputationally efficient representation for each wavelength in thevirtual ray of light. The virtual ray of light can include one or morewavelengths of electromagnetic radiation.

In block 710, the processor can obtain multiple volume attributesassociated with a particular volume. The particular volume can be thevolume that the user is shading. The multiple volume attributesassociated with the particular volume are user-specified and include thecolor, the index of refraction, the phase function, and the surfaceroughness of the particular volume.

In block 720, the processor can determine a particular absorptioncoefficient of the particular volume by retrieving from thecomputationally efficient representation the particular absorptioncoefficient based on the multiple volume attributes associated with theparticular volume without simulating the virtual ray of lightinteracting with the volume, thereby increasing speed of computation.

The processor can determine a numerically unstable volume attributeamong the multiple volume attributes. When an attribute is numericallyunstable, small differences in the attribute produce vast differences inthe results. In some cases, to avoid numerical instability, thenumerical precision of the attribute has to exceed the numericalprecision of a computer. Consequently, in case of the numericallyunstable attributes, the processor does not utilize the lookup table,and instead represents the attribute as an analytic function. Thenumerically unstable volume attribute can be the index of refraction.For example, when the index of refraction exceeds 2.0, small differencesin the path of the virtual ray of light, produce vastly differentresults.

To determine the analytic function, the processor, based on thecomputationally efficient representation, can fit an analytic functionto the numerically unstable volume attribute. For example, the processorcan use the numerically stable portion of the attribute to fit theanalytic function, as shown in FIG. 4, and can use the analytic functionto extrapolate the behavior of the attribute in the numerically unstableregion. The processor can determine the particular absorptioncoefficient of the particular volume based on the analytic function.

In one embodiment, the processor can use a neural network to determinethe absorption coefficient based on inputs including the index ofrefraction, the phase function, and/or the surface roughness associatedwith the particular volume.

FIG. 8 is a flowchart of a method to efficiently determine an absorptioncoefficient of a volume. In block 800, a processor can create acomputationally efficient representation indicating a correspondencebetween a dependent attribute associated with a volume, and multiplevolume attributes associated with the volume by simulating a virtual rayof light interacting with the volume based on the multiple volumeattributes. The dependent attribute can be an absorption coefficient, atransparency, a scattering coefficient, a color, an index of refraction,a phase function, or a surface roughness. The dependent attributedepends on the multiple volume attributes.

In block 810, the processor can obtain multiple volume attributesassociated with a particular volume, where the multiple volumeattributes associated with the particular volume are user-specified. Forexample, if the dependent attribute is a scattering coefficient, themultiple volume attributes can include color, index of refraction, phasefunction, and surface roughness. If the dependent attribute is a phasefunction, the multiple volume attributes can include scatteringcoefficient, color, index of refraction, and surface roughness.

In block 820, the processor can determine a particular dependentattribute of the particular volume by retrieving from thecomputationally efficient representation the particular dependentattribute based on the multiple volume attributes without simulating thevirtual ray of light interacting with the volume. By using thecomputationally efficient representation instead of performing thesimulation, the processor can increase the speed of computation. Theprocessor can perform additional steps as described in FIG. 7.

REMARKS

The terms “example,” “embodiment,” and “implementation” are usedinterchangeably. For example, references to “one example” or “anexample” in the disclosure can be, but not necessarily are, referencesto the same implementation; and, such references mean at least one ofthe implementations. The appearances of the phrase “in one example” arenot necessarily all referring to the same example, nor are separate oralternative examples mutually exclusive of other examples. A feature,structure, or characteristic described in connection with an example canbe included in another example of the disclosure. Moreover, variousfeatures are described which can be exhibited by some examples and notby others. Similarly, various requirements are described which can berequirements for some examples but no other examples.

The terminology used herein should be interpreted in its broadestreasonable manner, even though it is being used in conjunction withcertain specific examples of the invention. The terms used in thedisclosure generally have their ordinary meanings in the relevanttechnical art, within the context of the disclosure, and in the specificcontext where each term is used. A recital of alternative language orsynonyms does not exclude the use of other synonyms. Specialsignificance should not be placed upon whether or not a term iselaborated or discussed herein. The use of highlighting has no influenceon the scope and meaning of a term. Further, it will be appreciated thatthe same thing can be said in more than one way.

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense, as opposed to anexclusive or exhaustive sense; that is to say, in the sense of“including, but not limited to.” As used herein, the terms “connected,”“coupled,” or any variant thereof means any connection or coupling,either direct or indirect, between two or more elements; the coupling orconnection between the elements can be physical, logical, or acombination thereof. Additionally, the words “herein,” “above,” “below,”and words of similar import can refer to this application as a whole andnot to any particular portions of this application. Where contextpermits, words in the above Detailed Description using the singular orplural number may also include the plural or singular numberrespectively. The word “or” in reference to a list of two or more itemscovers all of the following interpretations of the word: any of theitems in the list, all of the items in the list, and any combination ofthe items in the list. The term “module” refers broadly to softwarecomponents, firmware components, and/or hardware components.

While specific examples of technology are described above forillustrative purposes, various equivalent modifications are possiblewithin the scope of the invention, as those skilled in the relevant artwill recognize. For example, while processes or blocks are presented ina given order, alternative implementations can perform routines havingsteps, or employ systems having blocks, in a different order, and someprocesses or blocks may be deleted, moved, added, subdivided, combined,and/or modified to provide alternative or sub-combinations. Each ofthese processes or blocks can be implemented in a variety of differentways. Also, while processes or blocks are at times shown as beingperformed in series, these processes or blocks can instead be performedor implemented in parallel, or can be performed at different times.Further, any specific numbers noted herein are only examples such thatalternative implementations can employ differing values or ranges.

Details of the disclosed implementations can vary considerably inspecific implementations while still being encompassed by the disclosedteachings. As noted above, particular terminology used when describingfeatures or aspects of the invention should not be taken to imply thatthe terminology is being redefined herein to be restricted to anyspecific characteristics, features, or aspects of the invention withwhich that terminology is associated. In general, the terms used in thefollowing claims should not be construed to limit the invention to thespecific examples disclosed herein, unless the above DetailedDescription explicitly defines such terms. Accordingly, the actual scopeof the invention encompasses not only the disclosed examples, but alsoall equivalent ways of practicing or implementing the invention underthe claims. Some alternative implementations can include additionalelements to those implementations described above or include fewerelements.

Any patents, applications, and other references noted above, and anythat may be listed in accompanying filing papers, are incorporatedherein by reference in their entireties, except for any subject matterdisclaimers or disavowals, and except to the extent that theincorporated material is inconsistent with the express disclosureherein, in which case the language in this disclosure controls. Aspectsof the invention can be modified to employ the systems, functions, andconcepts of the various references described above to provide yetfurther implementations of the invention.

To reduce the number of claims, certain implementations are presentedbelow in certain claim forms, but the applicant contemplates variousaspects of an invention in other forms. For example, aspects of a claimcan be recited in a means-plus-function form or in other forms, such asbeing embodied in a computer-readable medium. A claim intended to beinterpreted as a means-plus-function claim will use the words “meansfor.” However, the use of the term “for” in any other context is notintended to invoke a similar interpretation. The applicant reserves theright to pursue such additional claim forms in either this applicationor in a continuing application.

I claim:
 1. A method comprising: creating a representation indicating acorrespondence between an absorption coefficient associated with avolume, and multiple volume attributes associated with the volume, bysimulating a virtual ray of light interacting with the volume based onthe multiple volume attributes, wherein the representation comprises alookup table including the multiple volume attributes comprising acolor, an index of refraction, a phase function, and a surfaceroughness, wherein the color, the index of refraction, the phasefunction, and the surface roughness comprise parameters specified by auser through a user interface; obtaining multiple volume attributesassociated with a particular volume, wherein the multiple volumeattributes associated with the particular volume are user-specified andinclude the color, the index of refraction, the phase function, and thesurface roughness; and determining a particular absorption coefficientof the particular volume by retrieving from the representation theparticular absorption coefficient based on the multiple volumeattributes associated with the particular volume without simulating thevirtual ray of light interacting with the volume, thereby increasingspeed of computation, wherein the multiple volume attributes associatedwith the particular volume include the color, the index of refraction,the phase function, and the surface roughness, wherein the surfaceroughness is represented using a numerical value or a distribution. 2.The method of claim 1, comprising: fitting an analytic function to anattribute representing the index of refraction, wherein the analyticfunction is a function that is locally represented by a convergent powerseries; and determining the particular absorption coefficient of theparticular volume based on the analytic function.
 3. The method of claim1, comprising: determining a numerically unstable volume attribute amongthe multiple volume attributes; based on the representation, fitting ananalytic function to the numerically unstable volume attribute; anddetermining the particular absorption coefficient of the particularvolume based on the analytic function.
 4. The method of claim 1,comprising: fitting an analytic function to a volume attribute among themultiple volume attributes, wherein the analytic function is a functionthat is locally represented by a convergent power series; anddetermining the particular absorption coefficient of the particularvolume based on the analytic function.
 5. The method of claim 1, therepresentation comprising an analytic function.
 6. The method of claim1, comprising: training a neural network to determine the absorptioncoefficient based on inputs including the index of refraction, the phasefunction, or the surface roughness associated with the particularvolume.
 7. The method of claim 1, the creating the representationcomprising: creating the representation for each wavelength in thevirtual ray of light, wherein the virtual ray of light includes one ormore wavelengths of electromagnetic radiation.
 8. At least onecomputer-readable storage medium, excluding transitory signals andcarrying instructions, which, when executed by at least one dataprocessor of a system, cause the system to: create a representationindicating a correspondence between a dependent attribute associatedwith a volume, and multiple volume attributes associated with the volumeby simulating a virtual ray of light interacting with the volume basedon the multiple volume attributes, wherein the dependent attributedepends on the multiple volume attributes, wherein the dependentattribute comprises an absorption coefficient, wherein the multiplevolume attributes comprise parameters specified by a user through a userinterface, wherein the representation comprises a lookup table includingthe multiple volume attributes; obtain multiple volume attributesassociated with a particular volume, wherein the multiple volumeattributes associated with the particular volume are user-specified; anddetermine a particular dependent attribute of the particular volume byretrieving from the representation the particular dependent attributebased on the multiple volume attributes associated with the particularvolume without simulating the virtual ray of light interacting with thevolume, thereby increasing speed of computation, wherein the multiplevolume attributes associated with the particular volume include asurface roughness, wherein the surface roughness is represented using anumerical value or a distribution.
 9. The computer-readable storagemedium of claim 8, wherein the dependent attribute comprise atransparency, or a scattering coefficient.
 10. The computer-readablestorage medium of claim 8, further comprising the instructions to: fitan analytic function to an attribute representing an index ofrefraction, wherein the analytic function is a function that is locallyrepresented by a convergent power series; and determine the particulardependent attribute of the particular volume based on the analyticfunction.
 11. The computer-readable storage medium of claim 8, furthercomprising the instructions to: determine a numerically unstable volumeattribute among the multiple volume attributes; based on therepresentation, fit an analytic function to the numerically unstablevolume attribute; and determine the particular dependent attribute ofthe particular volume based on the analytic function.
 12. Thecomputer-readable storage medium of claim 8, further comprising theinstructions to: fit an analytic function to a volume attribute amongthe multiple volume attributes, wherein the analytic function is afunction that is locally represented by a convergent power series; anddetermine the particular dependent attribute of the particular volumebased on the analytic function.
 13. The computer-readable storage mediumof claim 8, the representation comprising an analytic function.
 14. Thecomputer-readable storage medium of claim 8, further comprising theinstructions to: train a neural network to determine the dependentattribute based on inputs including an index of refraction, a phasefunction, or a surface roughness associated with the particular volume.15. The computer-readable storage medium of claim 8, the instructions tocreate the representation further comprising the instructions to: createthe representation for each wavelength in the virtual ray of light,wherein the virtual ray of light includes one or more wavelengths ofelectromagnetic radiation.
 16. A system comprising: at least onehardware processor; at least one non-transitory memory storinginstructions, which, when executed by the at least one hardwareprocessor, cause the system to: create a representation indicating acorrespondence between an absorption coefficient associated with avolume, and multiple volume attributes associated with the volume, bysimulating a virtual ray of light interacting with the volume based onthe multiple volume attributes, wherein the representation comprises alookup table including the multiple volume attributes comprising acolor, an index of refraction, a phase function, and a surfaceroughness; wherein the color, the index of refraction, the phasefunction, and the surface roughness comprise parameters specified by auser through a user interface; obtain multiple volume attributesassociated with a particular volume, wherein the multiple volumeattributes associated with the particular volume are user-specified andinclude the color, the index of refraction, the phase function, and thesurface roughness; and determine a particular absorption coefficient ofthe particular volume by retrieving from the representation theparticular absorption coefficient based on the multiple volumeattributes associated with the particular volume without simulating thevirtual ray of light interacting with the volume, thereby increasingspeed of computation, wherein the multiple volume attributes associatedwith the particular volume include the color, the index of refraction,the phase function, and the surface roughness, wherein the surfaceroughness is represented using a numerical value or a distribution. 17.The system of claim 16, further comprising the instructions to: fit ananalytic function to an attribute representing the index of refraction,wherein the analytic function is a function that is locally representedby a convergent power series; and determine the particular absorptioncoefficient of the particular volume based on the analytic function. 18.The system of claim 16, further comprising the instructions to:determine a numerically unstable volume attribute among the multiplevolume attributes; based on the representation, fit an analytic functionto the numerically unstable volume attribute; and determine theparticular absorption coefficient of the particular volume based on theanalytic function.
 19. The system of claim 16, further comprising theinstructions to: fit an analytic function to a volume attribute amongthe multiple volume attributes, wherein the analytic function is afunction that is locally represented by a convergent power series; anddetermine the particular absorption coefficient of the particular volumebased on the analytic function.
 20. The system of claim 16, therepresentation comprising an analytic function.
 21. The system of claim16, further comprising the instructions to: train a neural network todetermine the absorption coefficient based on inputs including the indexof refraction, the phase function, or the surface roughness associatedwith the particular volume.
 22. The system of claim 16, the instructionsto create the representation further comprising the instructions to:create the representation for each wavelength in the virtual ray oflight, wherein the virtual ray of light includes one or more wavelengthsof electromagnetic radiation.